home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / PowerPlant / Everything / CEverythingApp.cp < prev    next >
Encoding:
Text File  |  1998-10-11  |  6.5 KB  |  330 lines  |  [TEXT/CWIE]

  1. // CEverythingApp.cp -- application methods
  2.  
  3. #include "CEverythingApp.h"
  4.  
  5. #include "CEverythingDoc.h"
  6. #include "CEverythingData.h"
  7.  
  8. #include "EverythingCmds.h"
  9. #include "CModelessButtons.h"
  10. #include "CModelessCheckboxes.h"
  11. #include "CModelessRadios.h"
  12. #include "CModelessText.h"
  13. #include "CModelessStuff.h"
  14. #include "CModelessBars.h"
  15. #include "CAboutDialog.h"
  16.  
  17. #include <Appearance.h>
  18. #include <UDesktop.h>
  19. #include <UEnvironment.h>
  20. #include <URegistrar.h>
  21. #include <UScreenPort.h>
  22. #include <PPobClasses.h>
  23. #include <PP_Messages.h>
  24.  
  25. // ---------------------------------------------------------------------------
  26. //        • CEverythingApp
  27. // ---------------------------------------------------------------------------
  28. //    Default constructor
  29.  
  30. CEverythingApp::CEverythingApp()
  31.     :LDocApplication()
  32. {
  33.     UEnvironment::InitEnvironment ();
  34.     if (UEnvironment::HasFeature (env_HasAppearance)) {
  35.         ::RegisterAppearanceClient ();
  36.     }
  37.  
  38.     UScreenPort::Initialize();
  39.  
  40.     RegisterClasses();
  41.  
  42.     SetUpMenus();
  43.  
  44.     // initialize app's data:
  45.  
  46. }
  47.  
  48.  
  49. // ---------------------------------------------------------------------------
  50. //        • ~CEverythingApp
  51. // ---------------------------------------------------------------------------
  52. //    Destructor
  53. //
  54.  
  55. CEverythingApp::~CEverythingApp()
  56. {
  57. }
  58.  
  59. // ---------------------------------------------------------------------------
  60. //        • RegisterClasses
  61. // ---------------------------------------------------------------------------
  62. //
  63.  
  64. void
  65. CEverythingApp::RegisterClasses()
  66. {
  67. //x    RegisterAllPPClasses();
  68.             // replaced to register only classes that we use.
  69.             // windows know what classes they use
  70.             // so call static functions in each window/dialog,
  71. }
  72.  
  73. // ---------------------------------------------------------------------------
  74. //        • SetUpMenus
  75. // ---------------------------------------------------------------------------
  76. //
  77.  
  78. void
  79. CEverythingApp::SetUpMenus()
  80. {
  81.  
  82. }
  83.  
  84. // ---------------------------------------------------------------------------
  85. //        • StartUp
  86. // ---------------------------------------------------------------------------
  87. //    The application calls this member function automatically when the application
  88. //    is opened
  89.  
  90. void
  91. CEverythingApp::StartUp()
  92. {
  93.     ObeyCommand(cmd_New, nil);
  94. }
  95.  
  96. //----------
  97. LModelObject*
  98. CEverythingApp::MakeNewDocument()
  99. {
  100.     CEverythingDoc    *theDoc = new CEverythingDoc(this);
  101.  
  102.     theDoc->newFile();
  103.  
  104.     return theDoc;
  105. }
  106.  
  107. //----------
  108. // called from SendAEOpenDoc in response to Open command
  109.  
  110. void
  111. CEverythingApp::OpenDocument(
  112.     FSSpec    *inMacFSSpec)
  113. {
  114.     CEverythingDoc    *theDoc = new CEverythingDoc(this);
  115.  
  116.     theDoc->openFile (inMacFSSpec);
  117. }
  118.  
  119. //----------
  120. // called from LDocApplication in response to Open command
  121.  
  122. void
  123. CEverythingApp::ChooseDocument()
  124. {
  125.     SFTypeList            typeList;
  126.     short                numTypes;
  127.     StandardFileReply    macFileReply;
  128.  
  129.     typeList[0] = kFileType;
  130.     numTypes = 1;
  131.  
  132.     UDesktop::Deactivate();
  133.     ::StandardGetFile(nil, numTypes, typeList, &macFileReply);
  134.     UDesktop::Activate();
  135.  
  136.     if (macFileReply.sfGood) {
  137.         SendAEOpenDoc(macFileReply.sfFile);
  138.     }
  139. }
  140.  
  141. //----------
  142. void    CEverythingApp::DoModelessButtons ()
  143. {
  144.     CModelessButtons*        dialog = CModelessButtons::CreateModelessButtons (this, cmdModelessButtons);
  145. }
  146.  
  147. //----------
  148. void    CEverythingApp::DoModelessCheckboxes ()
  149. {
  150.     DModelessCheckboxesData*        data = new DModelessCheckboxesData;
  151.  
  152.  
  153.     // pre-invoke code
  154.  
  155.     CModelessCheckboxes*        dialog = CModelessCheckboxes::CreateModelessCheckboxes (this, cmdModelessCheckboxes, data);
  156. }
  157.  
  158. //----------
  159. void    CEverythingApp::DoModelessRadios ()
  160. {
  161.     DModelessRadiosData*        data = new DModelessRadiosData;
  162.  
  163.  
  164.     // pre-invoke code
  165.  
  166.     CModelessRadios*        dialog = CModelessRadios::CreateModelessRadios (this, cmdModelessRadios, data);
  167. }
  168.  
  169. //----------
  170. void    CEverythingApp::DoModelessText ()
  171. {
  172.     DModelessTextData*        data = new DModelessTextData;
  173.  
  174.  
  175.     // pre-invoke code
  176.  
  177.     CModelessText*        dialog = CModelessText::CreateModelessText (this, cmdModelessText, data);
  178. }
  179.  
  180. //----------
  181. void    CEverythingApp::DoModelessStuff ()
  182. {
  183.     DModelessStuffData*        data = new DModelessStuffData;
  184.  
  185.  
  186.     // pre-invoke code
  187.  
  188.     CModelessStuff*        dialog = CModelessStuff::CreateModelessStuff (this, cmdModelessStuff, data);
  189. }
  190.  
  191. //----------
  192. void    CEverythingApp::DoModelessMoreStuff ()
  193. {
  194.     DModelessBarsData*        data = new DModelessBarsData;
  195.  
  196.  
  197.     // pre-invoke code
  198.  
  199.     CModelessBars*        dialog = CModelessBars::CreateModelessBars (this, cmdModelessMoreStuff, data);
  200. }
  201.  
  202. //----------
  203. void    CEverythingApp::DoInvokeAbout ()
  204. {
  205.     CAboutDialog*        dialog = CAboutDialog::CreateAboutDialog (this, cmdInvokeAbout);
  206. }
  207.  
  208. //----------
  209. void    CEverythingApp::FinishInvokeAbout (
  210.     void*        ioParam)
  211. {
  212.     CAboutDialog*        dialog = (CAboutDialog *)ioParam;
  213.  
  214.  
  215.     // post-invoke code
  216.  
  217.     delete dialog;
  218. }
  219.  
  220. // ---------------------------------------------------------------------------
  221. //        • ObeyCommand
  222. // ---------------------------------------------------------------------------
  223. //    Respond to commands
  224.  
  225. Boolean
  226. CEverythingApp::ObeyCommand(
  227.     CommandT    inCommand,
  228.     void*        ioParam)
  229. {
  230.     Boolean        cmdHandled = true;
  231.  
  232.     if (inCommand < 0) {
  233.         // modal dialog has finished
  234.  
  235.         switch (-inCommand) {
  236.         case cmdInvokeAbout:    
  237.                 FinishInvokeAbout (ioParam);
  238.             break;
  239.  
  240.         }
  241.  
  242.     } else {
  243.         switch (inCommand) {
  244.  
  245.     case cmdModelessButtons:
  246.             DoModelessButtons ();
  247.         break;
  248.  
  249.     case cmdModelessCheckboxes:
  250.             DoModelessCheckboxes ();
  251.         break;
  252.  
  253.     case cmdModelessRadios:
  254.             DoModelessRadios ();
  255.         break;
  256.  
  257.     case cmdModelessText:
  258.             DoModelessText ();
  259.         break;
  260.  
  261.     case cmdModelessStuff:
  262.             DoModelessStuff ();
  263.         break;
  264.  
  265.     case cmdModelessMoreStuff:
  266.             DoModelessMoreStuff ();
  267.         break;
  268.  
  269.     case cmdInvokeAbout:
  270.             DoInvokeAbout ();
  271.         break;
  272.  
  273.         default:
  274.                 cmdHandled = LDocApplication::ObeyCommand(inCommand, ioParam);
  275.             break;
  276.         }
  277.     }
  278.  
  279.     return cmdHandled;
  280. }
  281.  
  282.  
  283. // ---------------------------------------------------------------------------
  284. //        • FindCommandStatus
  285. // ---------------------------------------------------------------------------
  286. //    Pass back status of a (menu) command
  287.  
  288. void
  289. CEverythingApp::FindCommandStatus(
  290.     CommandT    inCommand,
  291.     Boolean        &outEnabled,
  292.     Boolean        &outUsesMark,
  293.     Char16        &outMark,
  294.     Str255        outName)
  295. {
  296.     outUsesMark = false;
  297.  
  298.     switch (inCommand) {
  299.  
  300.     // +++ Add cases here for the commands you handle
  301.  
  302.         case cmdModelessButtons:
  303.                 outEnabled = true;
  304.             break;
  305.         case cmdModelessCheckboxes:
  306.                 outEnabled = true;
  307.             break;
  308.         case cmdModelessRadios:
  309.                 outEnabled = true;
  310.             break;
  311.         case cmdModelessText:
  312.                 outEnabled = true;
  313.             break;
  314.         case cmdModelessStuff:
  315.                 outEnabled = true;
  316.             break;
  317.         case cmdModelessMoreStuff:
  318.                 outEnabled = true;
  319.             break;
  320.         case cmdInvokeAbout:
  321.                 outEnabled = true;
  322.             break;
  323.  
  324.     default:
  325.             LDocApplication::FindCommandStatus(inCommand, outEnabled, outUsesMark,
  326.                                                 outMark, outName);
  327.         break;
  328.     }
  329. }
  330.